// LocalStorageImpl 实现了 IStorage 接口，封装了对浏览器 localStorage 的常用操作
// 该类用于统一管理本地存储，便于维护和扩展
import type { IStorage } from '../types';

/** LocalStorageImpl 类 实现了 IStorage 接口，封装 localStorage 的常用操作 */
class LocalStorageImpl implements IStorage {
	/**
	 * 设置指定 key 的值
	 *
	 * @param key 键名，字符串类型
	 * @param value 键值，字符串类型
	 * @returns 无返回值
	 */
	setItem(key: string, value: string): void {
		localStorage.setItem(key, value);
	}

	/**
	 * 获取指定 key 的值
	 *
	 * @param key 键名，字符串类型
	 * @returns 对应的字符串值或 null
	 */
	getItem(key: string): string | null {
		return localStorage.getItem(key);
	}

	/**
	 * 移除指定 key 的数据
	 *
	 * @param key 键名，字符串类型
	 * @returns 无返回值
	 */
	removeItem(key: string): void {
		localStorage.removeItem(key);
	}

	/**
	 * 清空所有 localStorage 数据
	 *
	 * @returns 无返回值
	 */
	clear(): void {
		localStorage.clear();
	}

	/**
	 * 判断指定 key 是否存在
	 *
	 * @param key 键名，字符串类型
	 * @returns 存在返回 true，否则返回 false
	 */
	keyExists(key: string): boolean {
		return localStorage.getItem(key) !== null;
	}
}

export default LocalStorageImpl;
